package com.acc.sys.framework;

import apijson.RequestMethod;
import apijson.framework.APIJSONSQLConfig;
import apijson.orm.SQLConfig;
import apijson.orm.model.Access;


public class AccSQLConfig extends APIJSONSQLConfig<Long> {
    static {
        DEFAULT_DATABASE = DATABASE_MYSQL;  // TODO 默认数据库类型，改成你自己的
        DEFAULT_SCHEMA = "";  // TODO 默认数据库名/模式，改成你自己的，默认情况是 MySQL: sys, PostgreSQL: public, SQL Server: dbo, Oracle:

        // 表名和数据库不一致的，需要配置映射关系。只使用 APIJSONORM 时才需要；
        // 如果用了 apijson-framework 且调用了 APIJSONApplication.init 则不需要
        // (间接调用 DemoVerifier.init 方法读取数据库 Access 表来替代手动输入配置)。
        // 但如果 Access 这张表的对外表名与数据库实际表名不一致，仍然需要这里注册。例如
        TABLE_KEY_MAP.put(Access.class.getSimpleName(), "sys_access");

        SIMPLE_CALLBACK = new SimpleCallback<Object>() {

            @Override
            public SQLConfig<Object> getSQLConfig(RequestMethod method, String database, String schema, String datasource, String table) {
                SQLConfig config = APIJSON_CREATOR.createSQLConfig();
                config.setMethod(method);
                config.setDatabase(database);
                config.setDatasource(datasource);
                config.setSchema(schema);
                config.setTable(table);
                return config;
            }

            //取消注释来实现自定义各个表的主键名
            //			@Override
            //			public String getIdKey(String database, String schema, String datasource, String table) {
            //				return StringUtil.firstCase(table + "Id");  // userId, comemntId ...
            //				//		return StringUtil.toLowerCase(t) + "_id";  // user_id, comemnt_id ...
            //				//		return StringUtil.toUpperCase(t) + "_ID";  // USER_ID, COMMENT_ID ...
            //			}

//            @Override
//            public String getUserIdKey(String database, String schema, String datasource, String table) {
//                return ""; // id / userId
//            }

            //取消注释来实现数据库自增 id
            @Override
            public Object newId(RequestMethod method, String database, String schema, String datasource, String table) {
                return null; // return null 则不生成 id，一般用于数据库自增 id
            }
        };
    }

    @Override
    public String getDBVersion() {
        return "5.7.22";  // "8.0.11";  // TODO 改成你自己的 MySQL 或 PostgreSQL 数据库版本号  // MYSQL 8 和 7 使用的 JDBC 配置不一样
    }
}
